package DeadLockDemo;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;

/**
 * @Author:Cjj
 * 如何预防和避免线程死锁!
 * 1.破坏请求与保持条件：一次性申请所有的资源
 * 2.破坏不剥夺条件：占用部分资源的线程进一步申请其他资源时,如果申请不到,可以主动释放它占有的资源
 * 3.破坏循环等待条件：靠按序申请资源来预防。按某一顺序申请资源,释放资源则反序释放。破坏循环等待条件。
 * 如何避免死锁?
 *  1.避免死锁：避免两个线程同时申请同一把锁。
 */
public class Thread {
    public static boolean currentThread() {
        return false;
    }


    public static void sleep(int i) {
        try {
            Thread.sleep(i);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void ThreadPoolExecutor(int corePoolSize,/*线程池的核心线程数量*/
                                   int maximumPoolSize/*线程池的最大线程数*/,
                                   long keepAliveTime/*当线程数大于核心线程数时,多余的空闲线程存活的最长时间*/,
                                   TimeUnit unit,//时间单位
                                   BlockingQueue<Runnable> workQueue/*任务队列,用于储存等待执行任务的队列*/){
        if(corePoolSize<0 || maximumPoolSize<=0 || maximumPoolSize<corePoolSize || keepAliveTime<0){
           throw new IllegalArgumentException();

        }
    }

}
